iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
0
Modern Web

我的30天MVC從零到不知道多少學習筆記系列 第 8

從零開始的MVC開發-LinQ 存取元素

  • 分享至 

  • xImage
  •  

今天來寫寫LinQ讀取單筆資料的方式!
這也是很常用的方法之一

首先是最常出現的,讀取第一筆資料/最後一筆資料
分別是使用 First()Last() 兩種方法
他們也有姊妹方法,分別是 FirstOrDefault()LastOrDefault() 兩種
差別在於,前者讀不到資料時會回傳null,後者會回傳default(T)
其餘都沒有差別
另外,First()跟Last()的方法可以選擇是否要有條件判斷
如果有條件判斷的情況下,他就會依據條件排序後的結果回傳第一筆/最後一筆資料

順道說一下條件判斷的方法可以使用 Contains()
可以判斷集合內有沒有符合的元素

以下實際操作看看

/*因為我懶,所以Students是直接複製上一篇的
我相信大家不會介意的,說不定也沒有人會注意*/
var Students=new[]
{
    new{name="Anne",score=87},
    new{name="Bob",score=75},
    new{name="Kevin",score=53},
    new{name="Emma",score=89},
    new{name="Steven",score=95}
};
//讀取
var firstContainA=Students.First(s=>s.name.Contains('a'));
//印出
Console.WriteLine("first name contains a name:{0}",firstContainA.name);

以上的程式,執行後妳會發現他印出的
居然是Emma!!!!!居然是Emma!!!!居然是Emma!!!
說好的Anne呢?!!?
好啦,可能只有我才會嚇這麼大跳...
那是因為LinQ本身是會區分大小寫的,所以我們必須讓他分不清楚大小寫
因此把程式修改成以下,就沒有問題囉

var firstContaine=Students.First(s=>s.name.ToLower().Contains('a'));
         //暫時把所有英文都當成小寫吧~的催眠術^^^^^^^^^

另外,除了讀取最前後資料外,還有個直接讀取索引值資料的方法 ElementAt()
一樣有個姊妹方法 ElementAtOrDefault() (到底是多愛姊妹
那差別相信大家都很聰明,就不重複說明了
使用的方法非常簡單,以下簡單寫個兩行

var itemAtThree=Students.ElementAt(2);
Console.WriteLine("3rd name in Students ,name:{0}",itemAtThree.name);

小提醒是,索引值是從0開始,所以第三筆資料的索引值是2
這應該...已經算是廢話提醒了吧 哈哈

好~
今天的筆記就到此啦!!
下一章再紀錄一下Count(),Max(),Min(),Sum()...的用法


上一篇
從零開始的MVC開發-LinQ 排序資料
下一篇
從零開始的MVC開發-LinQ 聚合運算
系列文
我的30天MVC從零到不知道多少學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言